package cn.jhg.account.rest;


import java.util.List;

import javax.ws.rs.BeanParam;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import cn.jhg.account.entity.User;
import cn.jhg.account.entity.UserStatus;
import cn.jhg.account.util.ServiceResult;

/**
 * 用户资源
 * @author Yefeng
 *
 */
@Path("/users")
public interface UserRest {
	
	/**
	 * 按 id 获取用户
	 * @param id	用户id
	 * @return		用户实体
	 */
    @Path("/id")
    @GET
    @Produces({MediaType.APPLICATION_JSON, })
    public User getUserById(@QueryParam("id") int id);
    
    /**
     * 按账号获取用户
     * @param account	用户账号
     * @return			用户实体
     */
    @Path("/account")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public User getUserByAccount(@QueryParam("account") String account);
    
    /**
     * 查找用户
     * @param account	用户账号（等于空表示全部）
     * @param name		用户名（等于空表示全部）
     * @param valid		用户是否有效  valid, invalid, 空（等于空表示全部）
     * @param locked	用户是否锁定 locked, unlocked, 空（等于空表示全部） 
     * @return
     */
    @Path("/find")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String findUsers(@QueryParam("account") String account,
    		@QueryParam("name") String name,
    		@QueryParam("valid") String valid,     // valid, invalid
    		@QueryParam("locked") String locked);  // locked, unlocked
    /**
     * 添加用户
     * @param account	用户账号
     * @param name      用户名
     * @param email     邮箱
     * @param telephone 联系电话
     * @return			添加用户ID
     */
    @Path("/add")
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public String addUser(@BeanParam User user, 
    			@FormParam("sdid")  int sdid);
    /**
     * 更新用户
     * @param id		用户id
     * @param name      用户名
     * @param email     邮箱
     * @param telephone 联系电话
     * @return			errorCode
     */
    @Path("/update")
    @PUT
    @Produces(MediaType.APPLICATION_JSON)
    public String updateUser(@FormParam("id") int id,
    		@FormParam("name") String name,
    		@FormParam("email") String email, 
    		@FormParam("sdid")  int sdid,
    		@FormParam("telephone") String telephone);
    
    /**
     * 解锁用户
     * @param id		用户id
     * @return			errorCode
     */
    @Path("/unlocked")
    @PUT
    @Produces(MediaType.APPLICATION_JSON)
    public String unlockedUser(@FormParam("id") int id,
    				@FormParam("sdid")  int sdid);
    
    /**
     * 锁定用户
     * @param id		用户id
     * @return			errorCode
     */
    @Path("/locked")
    @PUT
    @Produces(MediaType.APPLICATION_JSON)
    public String lockedUser(@FormParam("id") int id,
    		@FormParam("sdid")  int sdid);
    
    /**
     * 失效用户
     * @param id		用户id
     * @return			errorCode
     */
    @Path("/invalid")
    @PUT
    @Produces(MediaType.APPLICATION_JSON)
    public String invalidUser(@FormParam("id") int id,
    			@FormParam("sdid")  int sdid);
    
    /**
     * 查找用户
     * @param account	用户账号（等于空表示全部）
     * @param name		用户名（等于空表示全部）
     * @param valid		用户是否有效  valid, invalid, 空（等于空表示全部）
     * @param locked	用户是否锁定 locked, unlocked, 空（等于空表示全部） 
     * @return
     */
    @Path("/get/user")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public ServiceResult<List<User>> findUserExit(@QueryParam("id") int ugid);
    
}

